package practice1_100;
import practice1_100.ListNode;
//给你一个链表，删除链表的倒数第 n 个结点，并且返回链表的头结点。
public class Practice19 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode loop=head,rear=head;
        int count=0;
        while (rear.next!=null){
            rear=rear.next;
            count++;
        }
        count++;


        if(n==1&&count==1){//删除只有一个元素时候
            head=null;
            return head;
        }
        if(count-n==0){//删除倒数第一个元素
            if(loop.next!=null){
                head=loop.next;
            }
            return  head;
        }else {//删除除了倒数第二个元素之外的元素时候
            for (int i=1;i<count-n;i++){
                loop=loop.next;
            }
            if(loop.next.next!=null){
                loop.next=loop.next.next;
            }else {
                loop.next=null;
            }
            return  head;
        }

    }

    public static void main(String[] args) {
//        [1,2,3,4,5]
        ListNode listNode1=new ListNode(1,new ListNode(2));
        ListNode listNode =new ListNode(1,new ListNode(2,new ListNode(3,new ListNode(4,new ListNode(5)))));
        Practice19 practice19 =new Practice19();
//        practice19.removeNthFromEnd(listNode,2);//
        practice19.removeNthFromEnd(listNode1,2);
    }
}
